package com.linktco.common.utils.excel.handle;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;

/**
 * 导入操作的返回结果封装类
 * @author zhangnx
 */
@Data
public class ImportResult {

    @ApiModelProperty("状态码 （200：全部成功，500：全部失败，300：部分成功）")
    private Type code;

    @ApiModelProperty("操作数据时发生错误的次数")
    private Integer errorCount;

    @ApiModelProperty("操作数据时发生错误的描述记录")
    private List<String> errorRecord;

    @ApiModelProperty("操作数据时发生错误的数据在Excel文件中的行号")
    private List<Integer> errorRow;
    
    @ApiModelProperty("成功导入的条数")
    private Integer successCount;

    @ApiModelProperty("操作数据时成功处理的数据在Excel文件中的行号")
    private List<Integer> successRow;

    @ApiModelProperty("耗时（毫秒）")
    private Long elapsedTime;



    public void addErrorRow(Integer errorRow){
        if(this.errorRow == null){
            this.errorRow = new ArrayList<>();
        }
        this.errorRow.add(errorRow);
    }

    public Integer getSuccessCount() {
		return successCount == null ? 0:successCount;
	}


	public List<Integer> getSuccessRow() {
        return successRow == null ? new ArrayList<>():successRow;
    }



    public void addSuccessRow(Integer successRow){
        if(this.successRow == null){
            this.successRow = new ArrayList<>();
        }
        this.successRow.add(successRow);
    }



    /**
     * 状态类型
     */
    public enum Type {
        /** 全部成功 */
        SUCCESS(200),
        /** 部分成功 */
        PART_PASS(300),
        /** 全部错误 */
        ERROR(500);

        private final int value;

        Type(int value)
        {
            this.value = value;
        }

        public int value()
        {
            return this.value;
        }
    }

}
